package com.gzist.springailab07.config;

import com.gzist.springailab07.tools.ToolRegistration;
import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 *  全局工具注册(将本地的function工具与外部的mcp-server工具进行整合到统一ToolCallback[]中)
 */
@Configuration
public class ToolCallBackConfig {

    @Bean
    public ToolCallback[] allTools(ToolRegistration localTools, ToolCallbackProvider toolCallbackProvider) {

        List<ToolCallback> merged = new ArrayList<>();

        // 1. 本地工具
        merged.addAll(List.of(localTools.allTools()));
        // 2. 远端 MCP 工具（FunctionCallback → ToolCallback 转换）
        for (var fc : toolCallbackProvider.getToolCallbacks()) {
            // FunctionCallback 已继承/实现 ToolCallback，直接强转即可
            merged.add((ToolCallback) fc);
        }
        return merged.toArray(new ToolCallback[0]);
    }
}